package cn.peng.stu4teach.pages.home.adapter;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.databinding.DataBindingUtil;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

import cn.peng.stu4teach.R;
import cn.peng.stu4teach.databinding.ItemCommFuncBinding;
import cn.peng.stu4teach.pages.funcs.AllFuncsActivity;
import cn.peng.stu4teach.pages.home.bean.FuncsBean;

/**
 * 首页常用功能的 Adapter
 * 功用：
 */
public class CommFuncsAdapter extends RecyclerView.Adapter<CommFuncsAdapter.CommFuncsVH> {
    /**
     * 要呈现的列表数据
     */
    private List<FuncsBean> items = new ArrayList<>();

    public void setItems (List<FuncsBean> pItems) {
        items = pItems;
        // 通知 Rv 视图刷新界面
        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public CommFuncsVH onCreateViewHolder (@NonNull ViewGroup parent, int viewType) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        ItemCommFuncBinding binding = DataBindingUtil.inflate(inflater, R.layout.item_comm_func, parent, false);
        return new CommFuncsVH(binding);
    }

    @Override
    public void onBindViewHolder (@NonNull CommFuncsVH holder, int position) {
        if (null == holder.mBinding || position > items.size()) {
            // 避免空指针和索引越界
            return;
        }
        holder.mBinding.setData(items.get(position));
        holder.mBinding.getRoot().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick (View v) {
                // TODO: CnPeng 2024/6/17 07:26 条目被点击了。进入对应的 WebView 界面中
                //ToastUtils.showShort("条目被点击了，进入对应的 Web 页面中");
                if (holder.getAdapterPosition() == items.size() - 1) {
                    // 如果是最后一个条目，点击之后进入全部功能页面
                    Context ctx = holder.mBinding.getRoot().getContext();
                    Intent intent = new Intent(ctx, AllFuncsActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    ctx.startActivity(intent);
                }
            }
        });
    }

    /**
     * 有多少个条目
     */
    @Override
    public int getItemCount () {
        return items.size();
    }

    /**
     * ViewHolder 便于复用
     */
    public static class CommFuncsVH extends RecyclerView.ViewHolder {
        final ItemCommFuncBinding mBinding;

        public CommFuncsVH (@NonNull ItemCommFuncBinding pBinding) {
            super(pBinding.getRoot());
            mBinding = pBinding;
        }
    }
}
